Function.prototype.MyBind = function (context = window, args) { // 在
    if (typeof this !== 'function') {
        throw new TypeError('Type Error');
    }
    // 保留this值
    var self = this;

    return function F() {
        // 考虑new的情况
        // 如果 Function(this) 在原型链上能找到F, 就进行nwe操作
        if (this instanceof F) {// 当.bind的返回值被当成构造函数被new时
            return new self(...args,...arguments)
        }
        return self.apply(context, [...args, ...arguments])
    }

}